package com.mallbook.model.mapper;

import com.mallbook.model.pojo.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 宋明松
 * @Version V1.0.0
 * @Date 2022-06-21
 * 商品数据访问层接口
 */
public interface GoodsMapper {
    /**
     * 增加
     *
     * @param goods 需要增加的商品
     */
    void add(Goods goods);

    /**
     * 删除（物理删除）
     *
     * @param id 需要删除的商品ID
     */
    void delete(int id);

    /**
     * 批量删除（物理删除）
     *
     * @param ids 需要删除的商品ID的集合
     */
    void deleteMore(List<Integer> ids);

    /**
     * 修改一条信息
     *
     * @param goods 要修改的信息
     * @param id    需要修改的商品ID
     */
    void update(@Param("goods") Goods goods, @Param("id") Integer id);

    /**
     * 修改多条数据 逻辑删除，热卖，最新，类别
     *
     * @param ids   需要修改的商品ID的集合
     * @param goods 需要修改的信息
     */
    void updateMore(@Param("list") List<Integer> ids, @Param("goods") Goods goods);

    /**
     * 查询所有
     *
     * @return
     */
    List<Goods> findGoods();

    /**
     * 通过ID查询 单条数据
     *
     * @param id 需要查询的商品ID
     * @return
     */
    Goods findGoodsById(int id);

    /**
     * -------------通过条件查询-------------
     *
     * @param goods 需要查询的信息
     * @return
     */
    List<Goods> findGoodsByCondition(Goods goods);

    /**
     * 查询热卖商品
     *
     * @param size 需要查询的数量
     * @return
     */
    List<Goods> findHotGoods(Integer size);

    /**
     * 查询最新商品
     *
     * @param size 需要查询的数量
     * @return
     */
    List<Goods> findNewGoods(Integer size);

    /**
     * 通过类别查询商品
     * @param cid 类别ID
     * @return
     */
    List<Goods> findALLGoodsByCid(String cid);
}
